#ifndef BASEXMLINFO_HPP
#define BASEXMLINFO_HPP

#include <QtCore/QString>

/**
 * Classe mère pour la représentation des informations extraites des
 * différents fichiers XML de l'API CroqueMonster. Le seul
 * dénominateur commun à tout ces fichiers est qu'ils ont un nom,
 * c'est donc l'unique attribut de cette classe.
 *
 * @author Johan "Solo" Luisier
 * @date Octobre 2011
 */
class BaseXmlInfo
{
public:
    /** Constructeur standard.
      * Initialise le nom du fichier XML duquel les informations sont extraites.
      *
      * @param[in] nom nom du fichier XML.
      */
    BaseXmlInfo( const QString& nom );
    /** Constructeur de copie.
      * Permet de dupliquer une instance de @c BaseInfoXml.
      *
      * @param[in] base instance à dupliquer.
      */
    BaseXmlInfo( const BaseXmlInfo& base );
    /** Destructeur.
      * Le destructeur n'a rien de spécial à faire.
      */
    virtual ~BaseXmlInfo();
    /** Opérateur d'affectation.
      * Cette méthode permet de copier le contenu d'une instance dans une autre.
      *
      * @param[in] base instance à copier dans l'instance courante.
      *
      * @return une référence sur l'instance courante.
      */
    BaseXmlInfo& operator=( const BaseXmlInfo& base );
    /** Permet d'afficher les informations contenues dans l'instance.
      * Est utilisé à des fin de debug uniquement.
      *
      * @todo Utiliser cutelogger au lieu de qDebug ?
      */
    virtual void afficheInstance() const = 0;
    /** Permet d'accéder à NomFichier.
      *
      * @return une référence constante sur NomFichier.
      */
    const QString& nomFichier() const;
    /** Permet de changer la valeur de NomFichier.
      *
      * @param[in] nom nouvelle valeur de NomFichier.
      */
    void setNomFichier( const QString& nom );
protected:
    /** Nom du fichier utilisé pour obtenir l'information voulue.
      */
    QString NomFichier;
};

#endif // BASEXMLINFO_HPP
